{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "#|default_exp models.XCM"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# XCM"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "> An Explainable Convolutional Neural Network for Multivariate Time Series Classification\n",
    "\n",
    "This is an unofficial PyTorch implementation of XCM created by Ignacio Oguiza (oguiza@timeseriesAI.co)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "#|export\n",
    "from tsai.imports import *\n",
    "from tsai.utils import *\n",
    "from tsai.models.layers import *\n",
    "from tsai.models.utils import *\n",
    "from tsai.models.explainability import *"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "#|export\n",
    "# This is an unofficial PyTorch implementation of XVM created by Ignacio Oguiza - timeseriesAU@gmail.com based on:\n",
    "\n",
    "# Fauvel, K., Lin, T., Masson, V., Fromont, É., & Termier, A. (2020). XCM: An Explainable Convolutional Neural Network \n",
    "# https://hal.inria.fr/hal-03469487/document\n",
    "# Official tensorflow implementation available at: https://github.com/XAIseries/XCM\n",
    "# No official XCM PyTorch implementation available as of Dec 11, 2021\n",
    "\n",
    "class XCM(Module):\n",
    "    def __init__(self, c_in:int, c_out:int, seq_len:Optional[int]=None, nf:int=128, window_perc:float=1., flatten:bool=False, custom_head:callable=None, \n",
    "                 concat_pool:bool=False, fc_dropout:float=0., bn:bool=False, y_range:tuple=None, **kwargs):\n",
    "        \n",
    "        window_size = int(round(seq_len * window_perc, 0))\n",
    "        self.conv2dblock = nn.Sequential(*[Unsqueeze(1), Conv2d(1, nf, kernel_size=(1, window_size), padding='same'), BatchNorm(nf), nn.ReLU()])\n",
    "        self.conv2d1x1block = nn.Sequential(*[nn.Conv2d(nf, 1, kernel_size=1), nn.ReLU(), Squeeze(1)])\n",
    "        self.conv1dblock = nn.Sequential(*[Conv1d(c_in, nf, kernel_size=window_size, padding='same'), BatchNorm(nf, ndim=1), nn.ReLU()])\n",
    "        self.conv1d1x1block = nn.Sequential(*[nn.Conv1d(nf, 1, kernel_size=1), nn.ReLU()])\n",
    "        self.concat = Concat()\n",
    "        self.conv1d = nn.Sequential(*[Conv1d(c_in + 1, nf, kernel_size=window_size, padding='same'), BatchNorm(nf, ndim=1), nn.ReLU()])\n",
    "            \n",
    "        self.head_nf = nf\n",
    "        self.c_out = c_out\n",
    "        self.seq_len = seq_len\n",
    "        if custom_head: self.head = custom_head(self.head_nf, c_out, seq_len, **kwargs)\n",
    "        else: self.head = self.create_head(self.head_nf, c_out, seq_len, flatten=flatten, concat_pool=concat_pool, \n",
    "                                           fc_dropout=fc_dropout, bn=bn, y_range=y_range)\n",
    "\n",
    "            \n",
    "    def forward(self, x):\n",
    "        x1 = self.conv2dblock(x)\n",
    "        x1 = self.conv2d1x1block(x1)\n",
    "        x2 = self.conv1dblock(x)\n",
    "        x2 = self.conv1d1x1block(x2)\n",
    "        out = self.concat((x2, x1))\n",
    "        out = self.conv1d(out)\n",
    "        out = self.head(out)\n",
    "        return out\n",
    "    \n",
    "\n",
    "    def create_head(self, nf, c_out, seq_len=None, flatten=False, concat_pool=False, fc_dropout=0., bn=False, y_range=None):\n",
    "        if flatten: \n",
    "            nf *= seq_len\n",
    "            layers = [Reshape()]\n",
    "        else: \n",
    "            if concat_pool: nf *= 2\n",
    "            layers = [GACP1d(1) if concat_pool else GAP1d(1)]\n",
    "        layers += [LinBnDrop(nf, c_out, bn=bn, p=fc_dropout)]\n",
    "        if y_range: layers += [SigmoidRange(*y_range)]\n",
    "        return nn.Sequential(*layers)\n",
    "    \n",
    "    \n",
    "    def show_gradcam(self, x, y=None, detach=True, cpu=True, apply_relu=True, cmap='inferno', figsize=None, **kwargs):\n",
    "\n",
    "        att_maps = get_attribution_map(self, [self.conv2dblock, self.conv1dblock], x, y=y, detach=detach, cpu=cpu, apply_relu=apply_relu)\n",
    "        att_maps[0] = (att_maps[0] - att_maps[0].min()) / (att_maps[0].max() - att_maps[0].min())\n",
    "        att_maps[1] = (att_maps[1] - att_maps[1].min()) / (att_maps[1].max() - att_maps[1].min())\n",
    "\n",
    "        figsize = ifnone(figsize, (10, 10))\n",
    "        fig = plt.figure(figsize=figsize, **kwargs)\n",
    "        ax = plt.axes()\n",
    "        plt.title('Observed variables')\n",
    "        if att_maps[0].ndim == 3:\n",
    "            att_maps[0] = att_maps[0].mean(0)\n",
    "        im = ax.imshow(att_maps[0], cmap=cmap)\n",
    "        cax = fig.add_axes([ax.get_position().x1+0.01,ax.get_position().y0,0.02,ax.get_position().height])\n",
    "        plt.colorbar(im, cax=cax)\n",
    "        plt.show()\n",
    "\n",
    "        fig = plt.figure(figsize=figsize, **kwargs)\n",
    "        ax = plt.axes()\n",
    "        plt.title('Time')\n",
    "        if att_maps[1].ndim == 3:\n",
    "            att_maps[1] = att_maps[1].mean(0)\n",
    "        im = ax.imshow(att_maps[1], cmap=cmap)\n",
    "        cax = fig.add_axes([ax.get_position().x1+0.01,ax.get_position().y0,0.02,ax.get_position().height])\n",
    "        plt.colorbar(im, cax=cax)\n",
    "        plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "from tsai.data.basics import *\n",
    "from tsai.learner import *"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "XCM(\n",
       "  (conv2dblock): Sequential(\n",
       "    (0): Unsqueeze(dim=1)\n",
       "    (1): Conv2dSame(\n",
       "      (conv2d_same): Conv2d(1, 128, kernel_size=(1, 51), stride=(1, 1))\n",
       "    )\n",
       "    (2): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    (3): ReLU()\n",
       "  )\n",
       "  (conv2d1x1block): Sequential(\n",
       "    (0): Conv2d(128, 1, kernel_size=(1, 1), stride=(1, 1))\n",
       "    (1): ReLU()\n",
       "    (2): Squeeze(dim=1)\n",
       "  )\n",
       "  (conv1dblock): Sequential(\n",
       "    (0): Conv1d(24, 128, kernel_size=(51,), stride=(1,), padding=(25,))\n",
       "    (1): BatchNorm1d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    (2): ReLU()\n",
       "  )\n",
       "  (conv1d1x1block): Sequential(\n",
       "    (0): Conv1d(128, 1, kernel_size=(1,), stride=(1,))\n",
       "    (1): ReLU()\n",
       "  )\n",
       "  (concat): Concat(dim=1)\n",
       "  (conv1d): Sequential(\n",
       "    (0): Conv1d(25, 128, kernel_size=(51,), stride=(1,), padding=(25,))\n",
       "    (1): BatchNorm1d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "    (2): ReLU()\n",
       "  )\n",
       "  (head): Sequential(\n",
       "    (0): GAP1d(\n",
       "      (gap): AdaptiveAvgPool1d(output_size=1)\n",
       "      (flatten): Reshape(bs)\n",
       "    )\n",
       "    (1): LinBnDrop(\n",
       "      (0): Linear(in_features=128, out_features=6, bias=True)\n",
       "    )\n",
       "  )\n",
       ")"
      ]
     },
     "execution_count": null,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dsid = 'NATOPS'\n",
    "X, y, splits = get_UCR_data(dsid, split_data=False)\n",
    "tfms = [None, TSCategorize()]\n",
    "dls = get_ts_dls(X, y, splits=splits, tfms=tfms)\n",
    "model =  XCM(dls.vars, dls.c, dls.len)\n",
    "learn = ts_learner(dls, model, metrics=accuracy)\n",
    "xb, yb = dls.one_batch()\n",
    "\n",
    "bs, c_in, seq_len = xb.shape\n",
    "c_out = len(np.unique(yb.cpu().numpy()))\n",
    "\n",
    "model = XCM(c_in, c_out, seq_len, fc_dropout=.5)\n",
    "test_eq(model.to(xb.device)(xb).shape, (bs, c_out))\n",
    "model = XCM(c_in, c_out, seq_len, concat_pool=True)\n",
    "test_eq(model.to(xb.device)(xb).shape, (bs, c_out))\n",
    "model = XCM(c_in, c_out, seq_len)\n",
    "test_eq(model.to(xb.device)(xb).shape, (bs, c_out))\n",
    "model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA3QAAAGuCAYAAADYqkTbAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/NK7nSAAAACXBIWXMAAA9hAAAPYQGoP6dpAABTI0lEQVR4nO3de3hU1aH38d+eSWYmdwiBXDDIRRRRgb5QEO+VVORY722R2orUenqUtGpe2z6cHkHRY6z2VapFsR6tttYKWqvHXrA2AtZzUFso3kVBEAQTiEACk2QmM3u9f1BGpwTNrD0hzOT78ZnnkZn922vN3nv2zMpae23HGGMEAAAAAMg4vt6uAAAAAADADg06AAAAAMhQNOgAAAAAIEPRoAMAAACADEWDDgAAAAAyFA06AAAAAMhQNOgAAAAAIEPRoAMAAACADEWDDgAAAAAyFA06ADjEXH/99XIcR83Nzb1dlYPOcRxdf/31vV2NhOXLl8txHC1fvjzl7KWXXqrCwsJuLXuovW8AQOagQQcAB8Ebb7yhr3/96xo8eLCCwaCqqqp08cUX64033ujtqgEAgAyW09sVAIBs98QTT2jGjBkqLS3VZZddpmHDhmnjxo26//779fjjj+vRRx/V+eef39vVRBdOOeUUtbe3KxAI9HZVAADoEg06AOhB69ev1ze+8Q0NHz5czz//vAYOHJh47aqrrtLJJ5+sb3zjG3r11Vc1fPjwXqzp/lzXVTQaVSgU6u2qHHQdHR0KBALy+Xx98v0DADIHQy4BoAfddtttamtr089+9rOkxpwklZWV6d5771U4HNatt966X7a5uVlf/epXVVxcrAEDBuiqq65SR0dH0jLPPvusTjrpJPXr10+FhYU66qij9O///u9Jy0QiEc2bN09HHHGEgsGgqqur9f3vf1+RSCRpOcdxVFtbq1/96lc65phjFAwG9fTTT6u0tFSzZs3ar36tra0KhUK69tprUy4rEonommuu0cCBA1VUVKRzzjlHH3zwwWduz6amJuXk5OiGG27Y77W1a9fKcRz99Kc/lSTt2LFD1157rY477jgVFhaquLhY06ZN0yuvvJKU23ed3KOPPqr/+I//0ODBg5Wfn6/W1tYur6H7y1/+oq985SsaMmRI4j1ec801am9v77LO7733nqZOnaqCggJVVVVp/vz5MsZ85nvdsmWLvvnNb6q8vFzBYFDHHHOMHnjggf2Wu+uuu3TMMccoPz9f/fv314QJE/TII4985voBANmBHjoA6EFPP/20hg4dqpNPPrnL10855RQNHTpUv//97/d77atf/aqGDh2q+vp6vfjii7rzzju1c+dO/eIXv5C097q8L33pSxozZozmz5+vYDCodevW6X/+538S63BdV+ecc45eeOEF/eu//quOPvpovfbaa7rjjjv0zjvv6Mknn0wq87nnntOSJUtUW1ursrIyjRw5Uueff76eeOIJ3XvvvUlDD5988klFIhFddNFFKZf1rW99Sw8//LC+9rWv6YQTTtBzzz2ns8466zO3Z3l5uU499VQtWbJE8+bNS3pt8eLF8vv9+spXviJpb0PqySef1Fe+8hUNGzZMTU1Nuvfee3XqqafqzTffVFVVVVL+xhtvVCAQ0LXXXqtIJHLAYZaPPfaY2tradMUVV2jAgAF6+eWXddddd+mDDz7QY489lrRsPB7XmWeeqeOPP1633nqrli5dqnnz5ikWi2n+/PkHfJ9NTU06/vjjE43sgQMH6o9//KMuu+wytba26uqrr5Yk3Xffffrud7+rL3/5y4kG/6uvvqqXXnpJX/va1z5zewIAsoABAPSIXbt2GUnm3HPP/dTlzjnnHCPJtLa2GmOMmTdvnpFkzjnnnKTlrrzySiPJvPLKK8YYY+644w4jyWzfvv2A6/7lL39pfD6f+ctf/pL0/KJFi4wk8z//8z+J5yQZn89n3njjjaRln3nmGSPJPP3000nP/8u//IsZPnx4ymWtWbPGSDJXXnll0nJf+9rXjCQzb968A74fY4y59957jSTz2muvJT0/evRoc/rppyf+3dHRYeLxeNIyGzZsMMFg0MyfPz/x3LJly4wkM3z4cNPW1pa0/L7Xli1blnjun5cxxpj6+nrjOI55//33E8/NnDnTSDLf+c53Es+5rmvOOussEwgEkvbbP7/vyy67zFRWVprm5uakci666CJTUlKSqMO5555rjjnmmP3qAwDoOxhyCQA9ZPfu3ZKkoqKiT11u3+utra1Jz8+ePTvp39/5znckSX/4wx8kSf369ZMkPfXUU3Jdt8t1P/bYYzr66KM1atQoNTc3Jx6nn366JGnZsmVJy5966qkaPXp00nOnn366ysrKtHjx4sRzO3fu1LPPPqvp06enXNa++n/3u99NKmdfr9NnueCCC5STk5NUn9dff11vvvlmUn2CwaB8vr1fc/F4XB999FFiWOrq1av3W+/MmTOVl5f3meV/cplwOKzm5madcMIJMsbo73//+37L19bWJv5/X49bNBrVn//85y7Xb4zRb37zG5199tkyxiRty6lTp6qlpSVR/379+umDDz7QX//618+sNwAgO9GgA4Aesq+htq9hdyAHaviNHDky6d8jRoyQz+fTxo0bJUnTp0/XiSeeqG9961sqLy/XRRddpCVLliQ17t5991298cYbGjhwYNLjyCOPlCRt27YtqYxhw4btV7+cnBxdeOGFeuqppxLXwj3xxBPq7OxMakB1t6z3339fPp9PI0aMSCrnqKOO+tTttE9ZWZmmTJmiJUuWJJ5bvHixcnJydMEFFySec11Xd9xxh0aOHKlgMKiysjINHDhQr776qlpaWvZbb1fvvSubNm3SpZdeqtLSUhUWFmrgwIE69dRTJWm/9fp8vv0mu9m3Pfbtx3+2fft27dq1K3Hd5Scf+65l3Lctf/CDH6iwsFATJ07UyJEjNXv27KQhtwCA7Mc1dADQQ0pKSlRZWalXX331U5d79dVXNXjwYBUXF3/qco7jJP07Ly9Pzz//vJYtW6bf//73Wrp0qRYvXqzTTz9df/rTn+T3++W6ro477jjdfvvtXa6zurp6v3V25aKLLtK9996rP/7xjzrvvPO0ZMkSjRo1SmPHjk0sk2pZXlx00UWaNWuW1qxZo3HjxmnJkiWaMmWKysrKEsvcfPPNuu666/TNb35TN954o0pLS+Xz+XT11Vd32aPZnd65eDyuL37xi9qxY4d+8IMfaNSoUSooKNCWLVt06aWXHrCnNBX71vH1r39dM2fO7HKZMWPGSJKOPvporV27Vr/73e+0dOlS/eY3v9Hdd9+tuXPndjlxDAAg+9CgA4Ae9KUvfUn33XefXnjhBZ100kn7vf6Xv/xFGzdu1Le//e39Xnv33XeTeo3WrVsn13U1dOjQxHM+n09TpkzRlClTdPvtt+vmm2/WD3/4Qy1btkw1NTUaMWKEXnnlFU2ZMmW/BmEqTjnlFFVWVmrx4sU66aST9Nxzz+mHP/xh0jLdLevwww+X67pav359Uq/c2rVru12f8847T9/+9rcTwy7feecdzZkzJ2mZxx9/XF/4whd0//33Jz2/a9eupIZfKl577TW98847euihh3TJJZcknn/22We7XN51Xb333nuJXrl9dZWUtB8/ad/Mn/F4XDU1NZ9Zp4KCAk2fPl3Tp09XNBrVBRdcoP/8z//UnDlzuOUCAPQBDLkEgB70ve99T3l5efr2t7+tjz76KOm1HTt26N/+7d+Un5+v733ve/tlFy5cmPTvu+66S5I0bdq0RP6fjRs3TpISQyO/+tWvasuWLbrvvvv2W7a9vV3hcLhb78Pn8+nLX/6ynn76af3yl79ULBZLGm6ZSln76n/nnXcmLbNgwYJu1UXae+3Y1KlTtWTJEj366KMKBAI677zzkpbx+/373R7gscce05YtW7pdzj/z+/2SlLReY4x+8pOfHDCz7zYK+5b96U9/qtzcXE2ZMuWAZVx44YX6zW9+o9dff32/17dv3574/38+pgKBgEaPHi1jjDo7O7v3pgAAGY0eOgDoQSNHjtRDDz2kiy++WMcdd5wuu+wyDRs2TBs3btT999+v5uZm/frXv97vejJJ2rBhg8455xydeeaZWrlyZWKa/33DHOfPn6/nn39eZ511lg4//HBt27ZNd999tw477LBEb+A3vvENLVmyRP/2b/+mZcuW6cQTT1Q8Htfbb7+tJUuW6JlnntGECRO69V6mT5+uu+66S/PmzdNxxx2no48+Oun17pY1btw4zZgxQ3fffbdaWlp0wgknqKGhQevWrUtp206fPl1f//rXdffdd2vq1KmJSWL2+dKXvqT58+dr1qxZOuGEE/Taa6/pV7/6lacbuI8aNUojRozQtddeqy1btqi4uFi/+c1vtHPnzi6XD4VCWrp0qWbOnKlJkybpj3/8o37/+9/r3//93/e7L+En3XLLLVq2bJkmTZqkyy+/XKNHj9aOHTu0evVq/fnPf0405s844wxVVFToxBNPVHl5ud566y399Kc/1VlnnfWZk/EAALJE702wCQB9x6uvvmpmzJhhKisrTW5urqmoqDAzZszYb+p9Yz6+bcGbb75pvvzlL5uioiLTv39/U1tba9rb2xPLNTQ0mHPPPddUVVWZQCBgqqqqzIwZM8w777yTtL5oNGp+9KMfmWOOOcYEg0HTv39/M378eHPDDTeYlpaWxHKSzOzZsw/4HlzXNdXV1UaSuemmm7pcprtltbe3m+9+97tmwIABpqCgwJx99tlm8+bN3bptwT6tra0mLy/PSDIPP/zwfq93dHSY//t//6+prKw0eXl55sQTTzQrV640p556qjn11FMTy+27NcFjjz223zq6um3Bm2++aWpqakxhYaEpKyszl19+uXnllVeMJPPzn/88sdzMmTNNQUGBWb9+vTnjjDNMfn6+KS8vN/Pmzdvvdgpdve+mpiYze/ZsU11dnThmpkyZYn72s58llrn33nvNKaecYgYMGGCCwaAZMWKE+d73vpe0rQEA2c0x5p/GowAAAAAAMgLX0AEAAABAhqJBBwAAAAAZigYdAAAAAGQoGnQAAAAAkKFo0AEAAABAhqJBBwAAAAAZ6pC7sbjrutq6dauKiorkOE5vVwcAAABALzHGaPfu3aqqqpLP9+l9UR0dHYpGo2krOxAIKBQKpW19PeWQa9Bt3bpV1dXVvV0NAAAAAIeIzZs367DDDjvg6x0dHRo2rEKNjS1pK7OiokIbNmw45Bt1h1yDrqioSJI0q2yWAr5AyvmykGtdtt/pvXusF/jj1tn2uN86uydmP+o2brz1oHba7yqVh2LW2Vyf/X7OcewrXRzw9hejcGeudbYgx8P28nBsdrr2x5fX7VUSarPOdsRSP/fsE/R3Wme3hwutsx+2F1hnQ37740OSwjH7Y9PxcN5t93D+ink4f3W6Xs999vmwh12V7+Ebv91DuZvbPJzsJUVc+3zE2J+/go79d2v/XPuNnePxYpg8+2qrzX5zefpO39lpf97cYyL2BUvKl4fzvc9+Y0dc+40dl/15s8UJW2claZev2Tobs9xXrolpe/vLiTbCgUSjUTU2tui99+9QcXGeVVmf1NraruGHX6NoNJpSg27hwoW67bbb1NjYqLFjx+quu+7SxIkTD7j8rl279MMf/lBPPPGEduzYocMPP1wLFizQv/zLv3S7zEOuQbdvmGXAF1DAF0w5H/LZf0B6s0EX8vCj2Rj7E0rnZ3RdfxqvDTov31khD/X20qDL9dl/Y+V7+JKVJNe1/9Gc57ffXgEvDTrHvtx8v7fPY0GO/fbyG/ts0MNZNey3/2ERsvgD2D5ejg9Jins4Nr006IyH84CXBp1PXs99HhqTPvts0MO5L+6h3FzHQytBUtzDH9Lisi87x0ODLtfx0KDzeLlJwMPHudP1cN71UG0v7znHQ+Nmb97+3OnlGIl7+Fw4Ht6z3/H2x1Kfh2Pb5+HzKKnbl2IVFeWqqMj+e2kfY1L/S9bixYtVV1enRYsWadKkSVqwYIGmTp2qtWvXatCgQfstH41G9cUvflGDBg3S448/rsGDB+v9999Xv379Uiq3xyZFWbhwoYYOHapQKKRJkybp5Zdf7qmiAAAAAKBX3X777br88ss1a9YsjR49WosWLVJ+fr4eeOCBLpd/4IEHtGPHDj355JM68cQTNXToUJ166qkaO3ZsSuX2SINuX+t03rx5Wr16tcaOHaupU6dq27ZtPVEcAAAAAMiYeNoektTa2pr0iES6HjoajUa1atUq1dTUJJ7z+XyqqanRypUru8z893//tyZPnqzZs2ervLxcxx57rG6++WbF46n1ZvZIgy7V1ikAAAAAeOWaWNoeklRdXa2SkpLEo76+vstym5ubFY/HVV5envR8eXm5Ghsbu8y89957evzxxxWPx/WHP/xB1113nf7f//t/uummm1J6z2m/hm5f63TOnDmJ5z6tdRqJRJJauq2tremuEgAAAACkbPPmzSouLk78OxhMfY6PA3FdV4MGDdLPfvYz+f1+jR8/Xlu2bNFtt92mefPmdXs9aW/QfVrr9O23395v+fr6et1www3prgYAAACAPsaYmNWEJl2tR5KKi4uTGnQHUlZWJr/fr6ampqTnm5qaVFFR0WWmsrJSubm58vs/nmDn6KOPVmNjo6LRqAKB7k3a02OTonTXnDlz1NLSknhs3ry5t6sEAAAAIAPtvf4tloZHatexBQIBjR8/Xg0NDYnnXNdVQ0ODJk+e3GXmxBNP1Lp16+R+4vYs77zzjiorK7vdmJN6oEGXaus0GAwmWr7dbQEDAAAAwKGkrq5O9913nx566CG99dZbuuKKKxQOhzVr1ixJ0iWXXJJ0WdoVV1yhHTt26KqrrtI777yj3//+97r55ps1e/bslMpN+5DLT7ZOzzvvPEkft05ra2vTXRwAAAAASJKMG5Nx0zDk0mId06dP1/bt2zV37lw1NjZq3LhxWrp0aeJStE2bNsn3iXuoVldX65lnntE111yjMWPGaPDgwbrqqqv0gx/8IKVye+TG4nV1dZo5c6YmTJigiRMnasGCBUmtUwAAAABIOxPb+0jHeizU1tYesBNr+fLl+z03efJkvfjii1Zl7dMjDbrPap0CAAAAQLqle1KUTNAjDTrp01unAAAAAADveqxB59Wc855RcSD1OVuKvrinB2rTTT77OWY6xn7B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MECFhYW68MIL1dTU1Es1Ria55557NGbMGBUXF6u4uFiTJ0/WH//4x8TrHFtIp1tuuUWO4+jqq69OPMcxBlvXX3+9HMdJeowaNSrxOseWvYxp0C1evFh1dXWaN2+eVq9erbFjx2rq1Knatm1bb1cNGSgcDmvs2LFauHBhl6/feuutuvPOO7Vo0SK99NJLKigo0NSpU9XR0XGQa4pMs2LFCs2ePVsvvviinn32WXV2duqMM85QOBxOLHPNNdfo6aef1mOPPaYVK1Zo69atuuCCC3qx1sgUhx12mG655RatWrVKf/vb33T66afr3HPP1RtvvCGJYwvp89e//lX33nuvxowZk/Q8xxi8OOaYY/Thhx8mHi+88ELiNY4tD0yGmDhxopk9e3bi3/F43FRVVZn6+vperBWygSTz29/+NvFv13VNRUWFue222xLP7dq1ywSDQfPrX/+6F2qITLZt2zYjyaxYscIYs/dYys3NNY899lhimbfeestIMitXruytaiKD9e/f3/zXf/0XxxbSZvfu3WbkyJHm2WefNaeeeqq56qqrjDGcv+DNvHnzzNixY7t8jWPLm4zooYtGo1q1apVqamoSz/l8PtXU1GjlypW9WDNkow0bNqixsTHpeCspKdGkSZM43pCylpYWSVJpaakkadWqVers7Ew6vkaNGqUhQ4ZwfCEl8Xhcjz76qMLhsCZPnsyxhbSZPXu2zjrrrKRjSeL8Be/effddVVVVafjw4br44ou1adMmSRxbXuX0dgW6o7m5WfF4XOXl5UnPl5eX6+233+6lWiFbNTY2SlKXx9u+14DucF1XV199tU488UQde+yxkvYeX4FAQP369UtaluML3fXaa69p8uTJ6ujoUGFhoX77299q9OjRWrNmDccWPHv00Ue1evVq/fWvf93vNc5f8GLSpEl68MEHddRRR+nDDz/UDTfcoJNPPlmvv/46x5ZHGdGgA4BMNHv2bL3++utJ1wgAXh111FFas2aNWlpa9Pjjj2vmzJlasWJFb1cLWWDz5s266qqr9OyzzyoUCvV2dZBlpk2blvj/MWPGaNKkSTr88MO1ZMkS5eXl9WLNMl9GDLksKyuT3+/fb6abpqYmVVRU9FKtkK32HVMcb/CitrZWv/vd77Rs2TIddthhiecrKioUjUa1a9eupOU5vtBdgUBARxxxhMaPH6/6+nqNHTtWP/nJTzi24NmqVau0bds2/Z//83+Uk5OjnJwcrVixQnfeeadycnJUXl7OMYa06devn4488kitW7eO85dHGdGgCwQCGj9+vBoaGhLPua6rhoYGTZ48uRdrhmw0bNgwVVRUJB1vra2teumllzje8JmMMaqtrdVvf/tbPffccxo2bFjS6+PHj1dubm7S8bV27Vpt2rSJ4wtWXNdVJBLh2IJnU6ZM0WuvvaY1a9YkHhMmTNDFF1+c+H+OMaTLnj17tH79elVWVnL+8ihjhlzW1dVp5syZmjBhgiZOnKgFCxYoHA5r1qxZvV01ZKA9e/Zo3bp1iX9v2LBBa9asUWlpqYYMGaKrr75aN910k0aOHKlhw4bpuuuuU1VVlc4777zeqzQywuzZs/XII4/oqaeeUlFRUWLsf0lJifLy8lRSUqLLLrtMdXV1Ki0tVXFxsb7zne9o8uTJOv7443u59jjUzZkzR9OmTdOQIUO0e/duPfLII1q+fLmeeeYZji14VlRUlLjed5+CggINGDAg8TzHGGxde+21Ovvss3X44Ydr69atmjdvnvx+v2bMmMH5y6venmYzFXfddZcZMmSICQQCZuLEiebFF1/s7SohQy1btsxI2u8xc+ZMY8zeWxdcd911pry83ASDQTNlyhSzdu3a3q00MkJXx5Uk8/Of/zyxTHt7u7nyyitN//79TX5+vjn//PPNhx9+2HuVRsb45je/aQ4//HATCATMwIEDzZQpU8yf/vSnxOscW0i3T962wBiOMdibPn26qaysNIFAwAwePNhMnz7drFu3LvE6x5Y9xxhjeqktCQAAAADwICOuoQMAAAAA7I8GHQAAAABkKBp0AAAAAJChaNABAAAAQIaiQQcAAAAAGYoGHQAAAABkKBp0AAAAAJChaNABAAAAQIaiQQcAAAAAGYoGHQAAAABkKBp0AAAAAJCh/j/pJ/1/+Bef3wAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 1000x1000 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 1000x1000 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "model.show_gradcam(xb, yb)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "[W NNPACK.cpp:53] Could not initialize NNPACK! Reason: Unsupported hardware.\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA3QAAAGuCAYAAADYqkTbAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/NK7nSAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA7J0lEQVR4nO3de3gV1bnH8d9OIDtASLgEcsFAABEEIViQGFFRSYmUonhpA1KJiLbVoEAOVWmFIFpj9RQpAoJWq70gFy94FMVi5KI1ikIjoIKCIIgmgJZsiJBAZp0/YnbdJkA2e5Iwk+/HZ56HzKxZa4XOwznv875rLY8xxggAAAAA4DhhDT0BAAAAAMCpIaADAAAAAIcioAMAAAAAhyKgAwAAAACHIqADAAAAAIcioAMAAAAAhyKgAwAAAACHIqADAAAAAIcioAMAAAAAhyKgA4DTzPTp0+XxeLR///6Gnkq983g8mj59ekNPw2/16tXyeDxavXp10O/ecMMNioqKqlXb0+33BgA4BwEdANSDDz/8UL/4xS/UoUMHeb1eJSYmavTo0frwww8bemoAAMDBmjT0BADA7Z5//nmNGjVKbdq00bhx49S5c2ft3LlTTzzxhJ599lktWrRIV111VUNPEzW4+OKLdfjwYUVERDT0VAAAqBEBHQDUoe3bt+v6669Xly5dtHbtWrVr187/bMKECbrooot0/fXXa+PGjerSpUsDzrQ6y7JUXl6uyMjIhp5KvTty5IgiIiIUFhbWKH9/AIBzUHIJAHXooYce0rfffqvHHnssIJiTpNjYWC1YsEClpaV68MEHq727f/9+/fznP1d0dLTatm2rCRMm6MiRIwFtVq5cqQsvvFCtWrVSVFSUunfvrt/+9rcBbcrKypSbm6szzzxTXq9XSUlJuuOOO1RWVhbQzuPxaPz48frHP/6hXr16yev16qWXXlKbNm00duzYavPz+XyKjIzU5MmTgx6rrKxMkyZNUrt27dSyZUtdccUV+uKLL07691lcXKwmTZronnvuqfZs69at8ng8mjNnjiTpm2++0eTJk9W7d29FRUUpOjpaQ4cO1QcffBDwXtU6uUWLFunuu+9Whw4d1Lx5c/l8vhrX0L355pv62c9+po4dO/p/x0mTJunw4cM1zvmzzz5TRkaGWrRoocTERM2YMUPGmJP+rnv27NGNN96ouLg4eb1e9erVS08++WS1do888oh69eql5s2bq3Xr1urfv78WLlx40v4BAO5Ahg4A6tBLL72k5ORkXXTRRTU+v/jii5WcnKzly5dXe/bzn/9cycnJysvL0zvvvKPZs2frP//5j/76179KqlyX99Of/lR9+vTRjBkz5PV6tW3bNv3rX//y92FZlq644gq99dZb+uUvf6mzzz5bmzZt0sMPP6xPPvlEy5YtCxjzjTfe0JIlSzR+/HjFxsaqW7duuuqqq/T8889rwYIFAaWHy5YtU1lZmUaOHBn0WDfddJP+/ve/67rrrtMFF1ygN954Q8OGDTvp32dcXJwGDRqkJUuWKDc3N+DZ4sWLFR4erp/97GeSKgOpZcuW6Wc/+5k6d+6s4uJiLViwQIMGDdJHH32kxMTEgPfvvfdeRUREaPLkySorKztumeXSpUv17bff6pZbblHbtm21bt06PfLII/riiy+0dOnSgLYVFRW6/PLLdf755+vBBx/UihUrlJubq2PHjmnGjBnH/T2Li4t1/vnn+4Psdu3a6dVXX9W4cePk8/k0ceJESdLjjz+u22+/Xddee60/4N+4caPeffddXXfddSf9+wQAuIABANSJAwcOGEnmyiuvPGG7K664wkgyPp/PGGNMbm6ukWSuuOKKgHa33nqrkWQ++OADY4wxDz/8sJFk9u3bd9y+//a3v5mwsDDz5ptvBtyfP3++kWT+9a9/+e9JMmFhYebDDz8MaPvaa68ZSeall14KuP+Tn/zEdOnSJeixCgsLjSRz6623BrS77rrrjCSTm5t73N/HGGMWLFhgJJlNmzYF3O/Zs6e57LLL/D8fOXLEVFRUBLTZsWOH8Xq9ZsaMGf57q1atMpJMly5dzLfffhvQvurZqlWr/Pd+2MYYY/Ly8ozH4zGff/65/15WVpaRZG677Tb/PcuyzLBhw0xERETA/24//L3HjRtnEhISzP79+wPGGTlypImJifHP4corrzS9evWqNh8AQONBySUA1JGDBw9Kklq2bHnCdlXPfT5fwP3s7OyAn2+77TZJ0iuvvCJJatWqlSTpxRdflGVZNfa9dOlSnX322erRo4f279/vvy677DJJ0qpVqwLaDxo0SD179gy4d9lllyk2NlaLFy/23/vPf/6jlStXKjMzM+ixquZ/++23B4xTlXU6mauvvlpNmjQJmM/mzZv10UcfBczH6/Uq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",
      "text/plain": [
       "<Figure size 1000x1000 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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VB6Px+d7i4yMVHJyMt8bglZZWSlJio6OliQVFRWpoaHB5/saOXKkhgwZwveFoDQ1NWnjxo2qqamR2+3m24JlsrKydPPNN/t8SxL/fqH9Dh8+rLi4OA0bNkwZGRk6duyYJL6t7qhHVw8gEGfOnFFTU5NiY2N96mNjY/XRRx910ahgVx6PR5Ja/N7OXQMCYRiG5s+fr+9973u64oorJJ39vsLCwhQVFeXTlu8LgfrrX/8qt9ut2tpa9e3bV6+99pouu+wyFRcX822h3TZu3Kj9+/dr7969za7x7xfaIzk5WS+++KJGjBihkydP6sEHH9R1112nAwcO8G11Q90iiASA7igrK0sHDhzwWfMBtNeIESNUXFysyspK/f73v9fMmTO1c+fOrh4WbKC0tFR33XWX8vPzFRER0dXDgc1MmTLF++fRo0crOTlZl1xyiX73u9+pV69eXTgytEW3mM46YMAAhYaGNtuhqaysTC6Xq4tGBbs6903xvaE9srOztXXrVr3zzju6+OKLvfUul0v19fWqqKjwac/3hUCFhYXp0ksvVWJionJzczVmzBg99dRTfFtot6KiIp06dUpXX321evTooR49emjnzp1atWqVevToodjYWL4xWCYqKkrf/e53deTIEf796oa6RRAZFhamxMREFRQUeOsMw1BBQYHcbncXjgx2lJCQIJfL5fO9VVVVac+ePXxvOC/TNJWdna3XXntN27dvV0JCgs/1xMRE9ezZ0+f7Kikp0bFjx/i+0CaGYaiuro5vC+02adIk/fWvf1VxcbG3jBs3ThkZGd4/843BKtXV1fr44481aNAg/v3qhrrNdNacnBzNnDlT48aNU1JSklauXKmamhrNnj27q4eGbqi6ulpHjhzx/j569KiKi4sVHR2tIUOGaP78+Xr44Yc1fPhwJSQk6IEHHlBcXJzS0tK6btDoFrKysrRhwwb98Y9/VL9+/bxrOSIjI9WrVy9FRkYqMzNTOTk5io6OltPp1Lx58+R2uzV+/PguHj0udIsXL9aUKVM0ZMgQff7559qwYYN27NihP//5z3xbaLd+/fp512+f06dPH/Xv399bzzeGtrr77rt1yy236JJLLtGJEye0dOlShYaGasaMGfz71R119fawwXj66afNIUOGmGFhYWZSUpL53nvvdfWQ0E298847pqRmZebMmaZpnj3m44EHHjBjY2PN8PBwc9KkSWZJSUnXDhrdQkvflSTzhRde8Lb58ssvzV/84hfmRRddZPbu3dv84Q9/aJ48ebLrBo1u44477jAvueQSMywszBw4cKA5adIk86233vJe59uC1b5+xIdp8o2h7aZNm2YOGjTIDAsLMwcPHmxOmzbNPHLkiPc631b34jBN0+yi+BUAAAAA0M10izWRAAAAAIALA0EkAAAAACBgBJEAAAAAgIARRAIAAAAAAkYQCQAAAAAIGEEkAAAAACBgBJEAAAAAgIARRAIAAAAAAkYQCQAAAAAIGEEkAAAAACBgBJEAAAAAgID9f68oczrFNmdmAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 1000x1000 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "model.show_gradcam(xb[0], yb[0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "torch.Size([16, 5, 2, 10])\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "create_conv_lin_nd_head(\n",
       "  (0): Conv1d(128, 10, kernel_size=(1,), stride=(1,))\n",
       "  (1): Linear(in_features=12, out_features=10, bias=True)\n",
       "  (2): Transpose(-1, -2)\n",
       "  (3): Reshape(bs, 5, 2, 10)\n",
       ")"
      ]
     },
     "execution_count": null,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "bs = 16\n",
    "n_vars = 3\n",
    "seq_len = 12\n",
    "c_out = 10\n",
    "xb = torch.rand(bs, n_vars, seq_len)\n",
    "new_head = partial(conv_lin_nd_head, d=(5, 2))\n",
    "net = XCM(n_vars, c_out, seq_len, custom_head=new_head)\n",
    "print(net.to(xb.device)(xb).shape)\n",
    "net.head"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "torch.Size([16, 2])\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "Sequential(\n",
       "  (0): AdaptiveAvgPool1d(output_size=1)\n",
       "  (1): Reshape(bs)\n",
       "  (2): BatchNorm1d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "  (3): Linear(in_features=128, out_features=512, bias=False)\n",
       "  (4): ReLU(inplace=True)\n",
       "  (5): BatchNorm1d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
       "  (6): Linear(in_features=512, out_features=2, bias=False)\n",
       ")"
      ]
     },
     "execution_count": null,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "bs = 16\n",
    "n_vars = 3\n",
    "seq_len = 12\n",
    "c_out = 2\n",
    "xb = torch.rand(bs, n_vars, seq_len)\n",
    "net = XCM(n_vars, c_out, seq_len)\n",
    "change_model_head(net, create_pool_plus_head, concat_pool=False)\n",
    "print(net.to(xb.device)(xb).shape)\n",
    "net.head"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/javascript": "IPython.notebook.save_checkpoint();",
      "text/plain": [
       "<IPython.core.display.Javascript object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "/Users/nacho/notebooks/tsai/nbs/061_models.XCM.ipynb saved at 2023-03-16 12:38:29\n",
      "Correct notebook to script conversion! 😃\n",
      "Thursday 16/03/23 12:38:32 CET\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "\n",
       "                <audio  controls=\"controls\" autoplay=\"autoplay\">\n",
       "                    <source src=\"data:audio/wav;base64,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\" type=\"audio/wav\" />\n",
       "                    Your browser does not support the audio element.\n",
       "                </audio>\n",
       "              "
      ],
      "text/plain": [
       "<IPython.lib.display.Audio object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#|eval: false\n",
    "#|hide\n",
    "from tsai.export import get_nb_name; nb_name = get_nb_name(locals())\n",
    "from tsai.imports import create_scripts; create_scripts(nb_name)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "python3",
   "language": "python",
   "name": "python3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
